package com.book.demo.demo.controller;

import com.book.demo.demo.model.LoginForm;
import com.book.demo.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;

@RestController
@RequestMapping("/user")
public class UserController {
    /**
     * 用于定义用户相关请求接口*/

    // 引入业务逻辑层对象
    @Autowired
    private UserService userService;

    /**
     * 用户登录接口
     * 测试：已通过基本测试，没有问题*/
    @CrossOrigin(origins = "http://localhost:5173")
    @RequestMapping("/login")
    public Boolean login(@RequestBody LoginForm loginForm, HttpSession session) {
        /**
         * 此处存在一个疑问，真正需要session的方法是 loginInformationVerification，但是我们却需要在 login 方法中定义并接收
         * 这种操作是否合理？应该是不合理的，这会让两层与层之间高耦合
         * 后续应该会对此处进行讲解*/
        // 参数校验（参数非空校验）
        if(!StringUtils.hasLength(loginForm.getUserName()) || !StringUtils.hasLength(loginForm.getPassword())) {
            return false;
        }
        // 登录信息校验并直接返回结果
        return userService.loginInformationVerification(loginForm, session);
    }
}
